home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1999 March / EnigmA AMIGA RUN 35 (1999)(G.R. Edizioni)(IT)[!][issue 1999-03].iso / earcd / devel / flash-0.4.3 / plugin / jritypes.h < prev    next >
C/C++ Source or Header  |  1999-01-01  |  6KB  |  181 lines

  1. /* -*- Mode: C; tab-width: 4; -*- */
  2. /*******************************************************************************
  3.  * Java Runtime Interface
  4.  * Copyright (c) 1996 Netscape Communications Corporation. All rights reserved.
  5.  ******************************************************************************/
  6.  
  7. #ifndef JRITYPES_H
  8. #define JRITYPES_H
  9.  
  10. #include "jri_md.h"
  11. #include <stddef.h>
  12. #include <stdlib.h>
  13. #include <stdarg.h>
  14.  
  15. #ifdef __cplusplus
  16. extern "C" {
  17. #endif
  18.  
  19. /*******************************************************************************
  20.  * Types
  21.  ******************************************************************************/
  22.  
  23. struct JRIEnvInterface;
  24.  
  25. typedef void*        JRIRef;
  26. typedef void*        JRIGlobalRef;
  27.  
  28. typedef jint        JRIInterfaceID[4];
  29. typedef jint        JRIFieldID;
  30. typedef jint        JRIMethodID;
  31.  
  32. /* synonyms: */
  33. typedef JRIGlobalRef    jglobal;
  34. typedef JRIRef            jref;
  35.  
  36. typedef union JRIValue {
  37.     jbool            z;
  38.     jbyte            b;
  39.     jchar            c;
  40.     jshort            s;
  41.     jint            i;
  42.     jlong            l;
  43.     jfloat            f;
  44.     jdouble            d;
  45.     jref            r;
  46. } JRIValue;
  47.  
  48. typedef JRIValue        jvalue;
  49.  
  50. typedef enum JRIBoolean {
  51.     JRIFalse        = 0,
  52.     JRITrue            = 1
  53. } JRIBoolean;
  54.  
  55. typedef enum JRIConstant {
  56.     JRIUninitialized    = -1
  57. } JRIConstant;
  58.  
  59. /* convenience types: */
  60. typedef JRIRef        jbooleanArray;
  61. typedef JRIRef        jbyteArray;
  62. typedef JRIRef        jcharArray;
  63. typedef JRIRef        jshortArray;
  64. typedef JRIRef        jintArray;
  65. typedef JRIRef        jlongArray;
  66. typedef JRIRef        jfloatArray;
  67. typedef JRIRef        jdoubleArray;
  68. typedef JRIRef        jobjectArray;
  69. typedef JRIRef        jstringArray;
  70. typedef JRIRef        jarrayArray;
  71.  
  72. #define JRIConstructorMethodName    "<init>"
  73.  
  74. /*******************************************************************************
  75.  * Signature Construction Macros
  76.  ******************************************************************************/
  77.  
  78. /*
  79. ** These macros can be used to construct signature strings. Hopefully their names
  80. ** are a little easier to remember than the single character they correspond to.
  81. ** For example, to specify the signature of the method:
  82. **
  83. **    public int read(byte b[], int off, int len);
  84. **
  85. ** you could write something like this in C:
  86. **
  87. **    char* readSig = JRISigMethod(JRISigArray(JRISigByte)
  88. **                                 JRISigInt
  89. **                                 JRISigInt) JRISigInt;
  90. **
  91. ** Of course, don't put commas between the types.
  92. */
  93. #define JRISigArray(T)        "[" T
  94. #define JRISigByte            "B"
  95. #define JRISigChar            "C"
  96. #define JRISigClass(name)    "L" name ";"
  97. #define JRISigFloat            "F"
  98. #define JRISigDouble        "D"
  99. #define JRISigMethod(args)    "(" args ")"
  100. #define JRISigNoArgs        ""
  101. #define JRISigInt            "I"
  102. #define JRISigLong            "J"
  103. #define JRISigShort            "S"
  104. #define JRISigVoid            "V"
  105. #define JRISigBoolean        "Z"
  106.  
  107. /*******************************************************************************
  108.  * Environments
  109.  ******************************************************************************/
  110.  
  111. extern JRI_PUBLIC_API(const struct JRIEnvInterface**)
  112. JRI_GetCurrentEnv(void);
  113.  
  114. /*******************************************************************************
  115.  * Specific Scalar Array Types
  116.  ******************************************************************************/
  117.  
  118. /*
  119. ** The JRI Native Method Interface does not support boolean arrays. This
  120. ** is to allow Java runtime implementations to optimize boolean array
  121. ** storage. Using the ScalarArray operations on boolean arrays is bound
  122. ** to fail, so convert any boolean arrays to byte arrays in Java before
  123. ** passing them to a native method.
  124. */
  125.  
  126. #define JRI_NewByteArray(env, length, initialValues)    \
  127.     JRI_NewScalarArray(env, length, JRISigByte, (jbyte*)(initialValues))
  128. #define JRI_GetByteArrayLength(env, array)    \
  129.     JRI_GetScalarArrayLength(env, array)
  130. #define JRI_GetByteArrayElements(env, array)    \
  131.     JRI_GetScalarArrayElements(env, array)
  132.  
  133. #define JRI_NewCharArray(env, length, initialValues)    \
  134.     JRI_NewScalarArray(env, ((length) * sizeof(jchar)), JRISigChar, (jbyte*)(initialValues))
  135. #define JRI_GetCharArrayLength(env, array)    \
  136.     JRI_GetScalarArrayLength(env, array)
  137. #define JRI_GetCharArrayElements(env, array)           \
  138.     ((jchar*)JRI_GetScalarArrayElements(env, array))
  139.  
  140. #define JRI_NewShortArray(env, length, initialValues)    \
  141.     JRI_NewScalarArray(env, ((length) * sizeof(jshort)), JRISigShort, (jbyte*)(initialValues))
  142. #define JRI_GetShortArrayLength(env, array)    \
  143.     JRI_GetScalarArrayLength(env, array)
  144. #define JRI_GetShortArrayElements(env, array)           \
  145.     ((jshort*)JRI_GetScalarArrayElements(env, array))
  146.  
  147. #define JRI_NewIntArray(env, length, initialValues)    \
  148.     JRI_NewScalarArray(env, ((length) * sizeof(jint)), JRISigInt, (jbyte*)(initialValues))
  149. #define JRI_GetIntArrayLength(env, array)    \
  150.     JRI_GetScalarArrayLength(env, array)
  151. #define JRI_GetIntArrayElements(env, array)           \
  152.     ((jint*)JRI_GetScalarArrayElements(env, array))
  153.  
  154. #define JRI_NewLongArray(env, length, initialValues)    \
  155.     JRI_NewScalarArray(env, ((length) * sizeof(jlong)), JRISigLong, (jbyte*)(initialValues))
  156. #define JRI_GetLongArrayLength(env, array)    \
  157.     JRI_GetScalarArrayLength(env, array)
  158. #define JRI_GetLongArrayElements(env, array)           \
  159.     ((jlong*)JRI_GetScalarArrayElements(env, array))
  160.  
  161. #define JRI_NewFloatArray(env, length, initialValues)    \
  162.     JRI_NewScalarArray(env, ((length) * sizeof(jfloat)), JRISigFloat, (jbyte*)(initialValues))
  163. #define JRI_GetFloatArrayLength(env, array)    \
  164.     JRI_GetScalarArrayLength(env, array)
  165. #define JRI_GetFloatArrayElements(env, array)           \
  166.     ((jfloat*)JRI_GetScalarArrayElements(env, array))
  167.  
  168. #define JRI_NewDoubleArray(env, length, initialValues)    \
  169.     JRI_NewScalarArray(env, ((length) * sizeof(jdouble)), JRISigDouble, (jbyte*)(initialValues))
  170. #define JRI_GetDoubleArrayLength(env, array)    \
  171.     JRI_GetScalarArrayLength(env, array)
  172. #define JRI_GetDoubleArrayElements(env, array)           \
  173.     ((jdouble*)JRI_GetScalarArrayElements(env, array))
  174.  
  175. /******************************************************************************/
  176. #ifdef __cplusplus
  177. }
  178. #endif
  179. #endif /* JRITYPES_H */
  180. /******************************************************************************/
  181.